import axios from 'axios'
axios.defaults.timeout = 30000
// axios.defaults.withCredentials = true
// const ERR_CODE_LIST = {
//   // 常见错误码列表
//   400: '请求错误',
//   401: '登录失效或在其他地方已登录',
//   403: '拒绝访问',
//   404: '请求地址出错',
//   408: '请求超时',
//   500: '服务器内部错误',
//   501: '服务未实现',
//   502: '网关错误',
//   503: '服务不可用',
//   504: '网关超时',
//   505: 'HTTP版本不受支持'
// }
// const baseURL = '/portal'
const $http = axios.create({
  // baseURL: baseURL,
  headers: {
    // 'Content-Type': 'application/json'
  }
})

$http.interceptors.request.use(
  config => {
    config.data = JSON.stringify(config.data)
    return config
  },
  err => {
    return Promise.reject(err)
  }
)

// http response 拦截器
$http.interceptors.response.use(
  response => {
    if (typeof (response.data) === 'string') {
      var key = response.data
      key = key.replace(/<\/?.+?>/g, '')
      key = key.replace(/[\r\n]/g, '')
      key = key.replace(/\s+/g, '')
      // eslint-disable-next-line no-eval
      var json = eval('(' + key + ')')
      response.data = json
    }
    return response
  },
  error => {
    return Promise.reject(error)
  }
)
/**
     * 封装get方法
     * @param url
     * @param data
     * @returns {Promise}
     */
export function get (url, params = {}) {
  return new Promise((resolve, reject) => {
    $http
      .get(url, {
        params: params
      })
      .then(response => {
        resolve(response.data)
      })
      .catch(err => {
        reject(err)
      })
  })
}
/**
 * 封装post请求
 * @param url
 * @param data
 * @returns {Promise}
 */

export function post (url, data = {}) {
  return new Promise((resolve, reject) => {
    $http.post(url, data).then(
      response => {
        resolve(response.data)
      },
      err => {
        resolve(err)
      }
    )
  })
}

export default {
  get: get,
  post: post
}
